Skip to content

fix(config)!: BREAKING: default optableCacheTargeting to OPTABLE_RESOLVED - #384

Open
jrosendahl-opt wants to merge 1 commit into
masterfrom
fix/default-targeting-cache-key
Open

jrosendahl-opt wants to merge 1 commit into
masterfrom
fix/default-targeting-cache-key

Conversation

@jrosendahl-opt

@jrosendahl-opt jrosendahl-opt commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

Why

targeting() wrote its public cache copy to optable-cache:targeting, while buildRTD, pubProvidedId and identifyAndTokenize all default to OPTABLE_RESOLVED. With default configs:

  • the Prebid RTD module never saw targeting() results (it woke on optable-targeting:change, then read a key nothing had written);
  • tokenize-resolved UID2s were not refreshable via refreshStaleUid2sFromCache (documented as a known mismatch in uid2-refresh.md).

OPTABLE_RESOLVED is already the convention used by wrapper integrations, so this makes it the default.

Found while auditing the README against the code.

Notes

  • Breaking: integrations reading optable-cache:targeting from localStorage directly stop getting updates and must set optableCacheTargeting: "optable-cache:targeting". Old values stay in localStorage, unused.
  • targeting() now overwrites OPTABLE_RESOLVED, including EIDs merged there by identifyAndTokenize. Integrations that already set optableCacheTargeting: "OPTABLE_RESOLVED" are unaffected.

…LVED

targeting() wrote its public cache copy to "optable-cache:targeting", while
buildRTD, pubProvidedId and identifyAndTokenize all default to
"OPTABLE_RESOLVED". With default configs RTD never saw targeting results and
tokenize-resolved UID2s were not refreshable from cache. OPTABLE_RESOLVED is
already the convention used by wrapper integrations; make it the default.

Move the default into DCN_DEFAULTS. The uid2-refresh test for the default key
read DCN_DEFAULTS.optableCacheTargeting, which did not exist, so it was
testing undefined; it now checks the real default.

BREAKING CHANGE: the default public targeting cache key changes from
"optable-cache:targeting" to "OPTABLE_RESOLVED". Integrations reading
"optable-cache:targeting" directly must set optableCacheTargeting explicitly.
targeting() now overwrites OPTABLE_RESOLVED, including EIDs merged there by
identifyAndTokenize.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ericst-amand-optable

Copy link
Copy Markdown

I do not know the versioning scheme in this package/repo, but if it is a breaking change, there should be a bump in some version number

@jrosendahl-opt

Copy link
Copy Markdown
Contributor Author

I do not know the versioning scheme in this package/repo, but if it is a breaking change, there should be a bump in some version number

Yes and we should be using semver.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants